#include "dataquerywindow.h"
#include "ui_dataquerywindow.h"

// 数据库操作头文件
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QBuffer>
#include <QDateTime>

#include <QDebug>

// 消息框头文件
#include <QMessageBox>

DataQueryWindow::DataQueryWindow(QWidget *parent) : QMainWindow(parent)
      , ui(new Ui::DataQueryWindow)
{
    // 设置并显示当前界面
    ui->setupUi(this);

    initTable();
    connectDatabase();

    // 连接所有按钮
    auto connectButton = [this](QPushButton *btn, const QString &field) {
        connect(btn, &QPushButton::clicked, [this, field]() {
            QString keyword = ui->queryEdit->text().trimmed();
            if (keyword.isEmpty()) {
                QMessageBox::information(this, "提示", "请输入搜索关键词");
                return;
            }
            searchDatabase(field, keyword);
        });
    };

    connectButton(ui->photoButton, "name");
    connectButton(ui->timeButton, "create_time");
    connectButton(ui->typeButton, "type_ani_pla");
    connectButton(ui->nameButton, "name_ani_pla");

    //int id = query.value("id").toUInt(); // 序号
    //QString name = query.value("name").toString(); // 图片名称
    //QString create_time = query.value("create_time").toString(); // 图片保存时间
    //QString type_ani_pla = query.value("type_ani_pla").toString(); // 动/植物类型
    //QString name_ani_pla = query.value("name_ani_pla").toString(); // 名称
    //QString detail_ani_pla = query.value("detail_ani_pla").toString(); // 百科详情
}

DataQueryWindow::~DataQueryWindow()
{
    delete ui;
}

// 返回按钮槽函数
void DataQueryWindow::on_backButton_clicked()
{
    //因为在跳转时，记录了上一个界面
    //所以可以利用此函数获取当前窗口的父窗口对象指针
    QWidget *parent = this->parentWidget();
    qDebug()<<"parent addr:"<<parent;
    parent->show();//把之前父界面的隐藏状态改为显示状态，显示父界面
    this->close();//关闭当前界面
//    //销毁子界面
//    delete this;  //如果设置了自动销毁，则不需要手动delete
}

//// 搜索图片名称按钮槽函数
//void DataQueryWindow::on_photoButton_clicked()
//{

//}

//// 搜索保存时间按钮槽函数
//void DataQueryWindow::on_timeButton_clicked()
//{

//}

//// 搜索动/植物类型按钮槽函数
//void DataQueryWindow::on_typeButton_clicked()
//{

//}

//// 搜索动植物名称按钮槽函数
//void DataQueryWindow::on_nameButton_clicked()
//{

//}

// 初始化表格
void DataQueryWindow::initTable() {
    ui->queryTable->setColumnCount(6);
    ui->queryTable->setHorizontalHeaderLabels(
        {"序号", "图片名称", "图片保存时间", "动/植物类型", "名称", "百科详情"});
    //headerText << "序号" << "图片名称" << "图片保存时间" << "动/植物类型" << "名称" << "百科详情";
    ui->queryTable->setColumnHidden(0, true); // 隐藏ID列
}

// 数据库连接
bool DataQueryWindow::connectDatabase() {
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("my_database.db");
    return db.open();
}

// 通用搜索函数
void DataQueryWindow::searchDatabase(const QString &field, const QString &keyword) {
    ui->queryTable->setRowCount(0); // 清空表格

    QSqlQuery query;
    query.prepare(QString("SELECT * FROM photos WHERE %1 LIKE ?").arg(field));
    query.addBindValue("%" + keyword + "%"); // 模糊匹配

    if (!query.exec()) {
        QMessageBox::critical(this, "错误", query.lastError().text());
        return;
    }

    // 填充表格
    while (query.next()) {
        int row = ui->queryTable->rowCount();
        ui->queryTable->insertRow(row);

        ui->queryTable->setItem(row, 0, new QTableWidgetItem(query.value("id").toString()));
        ui->queryTable->setItem(row, 1, new QTableWidgetItem(query.value("name").toString()));
        ui->queryTable->setItem(row, 2, new QTableWidgetItem(query.value("create_time").toString()));
        ui->queryTable->setItem(row, 3, new QTableWidgetItem(query.value("type_ani_pla").toString()));
        ui->queryTable->setItem(row, 4, new QTableWidgetItem(query.value("name_ani_pla").toString()));
        ui->queryTable->setItem(row, 5, new QTableWidgetItem(query.value("detail_ani_pla").toString()));
    }

    //int id = query.value("id").toUInt(); // 序号
    //QString name = query.value("name").toString(); // 图片名称
    //QString create_time = query.value("create_time").toString(); // 图片保存时间
    //QString type_ani_pla = query.value("type_ani_pla").toString(); // 动/植物类型
    //QString name_ani_pla = query.value("name_ani_pla").toString(); // 名称
    //QString detail_ani_pla = query.value("detail_ani_pla").toString(); // 百科详情
}

